এক্সেল ম্যাক্রো ব্যবহার করার সময় কিছু কাজের জন্য যেমন ডেটা আপডেট, ফর্মুলার পুনঃগণনা বা লুপের মাধ্যমে ডেটা প্রসেস করা, আপনি চাইবেন যে এক্সেলের স্ক্রীন বা হিসাবের প্রসেসিং যেন বিরত না হয়। এর ফলে কোডটি দ্রুত চলতে পারে এবং ব্যবহারকারীকে অবাঞ্ছিত স্ক্রীন আপডেট বা হিসাবের পুনঃগণনা থেকে বিরত রাখা যায়। এই প্রক্রিয়ায় আপনি ScreenUpdating এবং Calculation মোড ব্যবহার করতে পারেন।
ScreenUpdating বন্ধ করা
ScreenUpdating বন্ধ করলে এক্সেল যখন কোনো পরিবর্তন ঘটায় (যেমন, সেল ভ্যালু পরিবর্তন, সেল রং পরিবর্তন), তখন স্ক্রীনে কোনো পরিবর্তন দেখাবে না। এটি কোড চলাকালীন এক্সেলের স্ক্রীন আপডেট বন্ধ করে দেয়, যার ফলে কোড দ্রুত চালানো যায়। কোড শেষ হলে আপনি ScreenUpdating আবার সক্রিয় করতে পারেন।
উদাহরণ: ScreenUpdating বন্ধ করা
Sub DisableScreenUpdating()
Application.ScreenUpdating = False ' স্ক্রীন আপডেট বন্ধ
' কোড যা স্ক্রীন আপডেট ছাড়া চলবে
For i = 1 To 10000
Cells(i, 1).Value = i
Next i
Application.ScreenUpdating = True ' স্ক্রীন আপডেট পুনরায় চালু
End Sub
ব্যাখ্যা:
- Application.ScreenUpdating = False: স্ক্রীনে কোনো পরিবর্তন দেখাবে না, যা কোডের গতিকে বাড়ায়।
- Application.ScreenUpdating = True: কোড চলার পর স্ক্রীন আপডেট আবার চালু হবে।
Calculation Mode পরিবর্তন করা
এক্সেলে ফর্মুলাগুলি সাধারণত automatic মোডে থাকে, অর্থাৎ, ফর্মুলা বা ডেটা পরিবর্তন হলে এক্সেল স্বয়ংক্রিয়ভাবে তা পুনঃগণনা করে। তবে যখন আপনি ম্যাক্রো ব্যবহার করে অনেক ডেটা বা ফর্মুলা পরিবর্তন করেন, তখন হিসাবের পুনঃগণনা প্রতি পরিবর্তনেই এক্সেলের গতি কমিয়ে দেয়। এই কারণে Calculation মোড manual এ পরিবর্তন করলে কোডের গতি বৃদ্ধি পায় এবং কোডের শেষে একবারে সব হিসাব করা হয়।
উদাহরণ: Calculation Mode পরিবর্তন করা
Sub DisableCalculation()
Application.Calculation = xlCalculationManual ' হিসাব মোড ম্যানুয়াল করা
' কোড যা অনেক ফর্মুলা আপডেট করবে
For i = 1 To 10000
Cells(i, 1).Formula = "=A" & i & "+10"
Next i
Application.Calculation = xlCalculationAutomatic ' হিসাব মোড স্বয়ংক্রিয় করা
Application.Calculate ' সকল ফর্মুলা পুনঃগণনা করা
End Sub
ব্যাখ্যা:
- Application.Calculation = xlCalculationManual: এক্সেলকে বলছে যে কোনো হিসাব পুনঃগণনা করবে না যতক্ষণ না আপনি এটি ম্যানুয়ালি করতে না বলেন।
- Application.Calculation = xlCalculationAutomatic: কোড শেষ হওয়ার পর এক্সেলকে স্বয়ংক্রিয় হিসাব পুনঃগণনা করতে বলা হচ্ছে।
- Application.Calculate: এই লাইনটি সমস্ত ফর্মুলা পুনঃগণনা করতে ব্যবহৃত হয়।
ScreenUpdating এবং Calculation একসাথে বন্ধ করা
আপনি যখন একাধিক অপারেশন একসাথে চালাতে চান, তখন ScreenUpdating এবং Calculation দুটি একসাথে বন্ধ করে কোডের গতি বৃদ্ধি করতে পারেন।
উদাহরণ: ScreenUpdating এবং Calculation বন্ধ করা
Sub OptimizeCodePerformance()
Application.ScreenUpdating = False ' স্ক্রীন আপডেট বন্ধ
Application.Calculation = xlCalculationManual ' হিসাব ম্যানুয়াল করা
Application.EnableEvents = False ' ইভেন্টস বন্ধ করা (যেমন Worksheet Change)
' কোড যা খুব বেশি ডেটা পরিবর্তন করবে
For i = 1 To 10000
Cells(i, 1).Value = i * 2
Next i
Application.ScreenUpdating = True ' স্ক্রীন আপডেট পুনরায় চালু
Application.Calculation = xlCalculationAutomatic ' হিসাব স্বয়ংক্রিয় করা
Application.EnableEvents = True ' ইভেন্টস পুনরায় চালু
Application.Calculate ' সকল ফর্মুলা পুনঃগণনা করা
End Sub
ব্যাখ্যা:
- Application.EnableEvents = False: এক্সেলের ইভেন্টগুলো (যেমন শীট পরিবর্তন হলে কোনো ম্যাক্রো রান করা) বন্ধ করে দেয়।
- কোড শেষে সবকিছু পুনরায় চালু করা হয়, যাতে কোনো প্রয়োজনীয় ইভেন্ট বা হিসাব সঠিকভাবে কাজ করে।
সারাংশ
ScreenUpdating এবং Calculation মোড ব্যবহার করে আপনি এক্সেল ম্যাক্রো চালানোর সময় কোডের গতি বৃদ্ধি করতে পারেন। ScreenUpdating বন্ধ করলে স্ক্রীনে কোনো আপডেট না দেখিয়ে কোড দ্রুত চলে, এবং Calculation মোড manual করলে ফর্মুলাগুলি স্বয়ংক্রিয়ভাবে পুনঃগণনা না হয়ে কোড শেষ হলে একবারে সব হিসাব করা হয়। এই দুইটি অপশন একসাথে ব্যবহার করলে বড় ডেটা সেট বা জটিল কাজের ক্ষেত্রে আপনার কোডের পারফরমেন্স উল্লেখযোগ্যভাবে উন্নত হতে পারে।
Read more